Actualmente existen tres grandes estrategias para resolver problemas de búsqueda: basadas en cálculo, enumerativas y aleatorias. 
Los métodos basados en cálculo han sido profundamente estudiados y a su vez se subdividen en dos clases primordiales: directos
e indirectos. 

Los métodos directos buscan el 
óptimo local "moviéndose" en el dominio utilizando como guía los valores de las derivadas parciales, éste método es conocido como {\it hill climbing}. 
Los indirectos buscan el extremo local resolviendo un conjunto de ecuaciones (normalmente no lineales), resultado
de igualar el gradiente de las ecuaciones a cero (raíz de la derivada primera). Esta es la generalización multidimensional de la 
noción de cálculo elemental de los puntos extremos, es decir, dada una función continua y no acotada, la forma de encontrar los máximos
consiste en restringir la búsqueda a aquellos puntos cuyas derivadas parciales se hacen cero. 


Estos dos métodos han sido mejorados,
extendidos y combinados, sin embargo salta a la vista que carecen de robustez. En efecto muchos problemas de la vida real no respetan 
la moral y las buenas maneras de la continuidad, lo que significa que éstas aproximaciones tienen muchas dificultades a la hora
de enfrentarse a problemas reales. 

Las estrategias enumerativas tienen una base bastante mas sencilla: dentro de un espacio finito de búsqueda
o en, lo que es equivalente, una discretización finita del espacio de búsqueda, el algoritmo evalúa todos los puntos y con esa información, toma la decisión
 de cuales son los mejores resultados. A pesar de que la simplicidad de éste método es muy atractiva, falla por una razón: falta de eficiencia.

Las estrategias aleatorias son un camino intermedio entre los métodos analíticos y los basados en enumeración, por ejemplo, un algoritmo
que trabaje con un conjunto de soluciones que se vayan aproximando en iteraciones sucesivas, guiados por supuesto por las funciones objetivo, 
y que en su etapa final nos de un buen conjunto de aproximaciones a las soluciones de nuestro problema, que como establecimos antes, 
es lo que en última instancia nos interesa. Pues bien,
de eso se tratan los algoritmos evolutivos, como veremos a continuación, son una familia de heurísticas que operan
sobre un conjunto de soluciones, que mejoran a medida que se les aplica un procedimiento inspirado en la teoría de la evolución
de Charles Darwin. Por sus características, no requieren información acerca de los objetivos sino solamente tener la capacidad de evaluarlos.

